Programming Languages and Lambda Calculi
نویسندگان
چکیده
These are the basic thoughts that should go into the preface. It is not a final version. In a series of papers in the mid-1960's, Landin expounded two important observations about programming languages. First, he argued that all programming languages share a basic set of facilities for specifying computation but differ in their choice of data and data primitives. The set of common facilities contains names, procedures, applications, exception mechanisms, mutable data structures, and possibly other forms of non-local control. Languages for numerical applications typically include several forms of numerical constants and large sets of numerical primitives, while those for string manipulation typically offer efficient string matching and manipulation primitives. Second, he urged that programmers and implementors alike should think of a programming language as an advanced, symbolic form of arithmetic and algebra. Since all of us are used to calculating with numbers, booleans, and even more complex data structures from our days in kindergarten and highschool, it should be easy to calculate with programs too. Program evaluation, many forms of program editing, program transformations, and optimizations are just different, more elaborate forms of calculation. Instead of simple arithmetic expressions, such calculations deal with programs and pieces of programs. Landin defined the programming language Iswim. The basis of his design was Church's λ-calculus. Church had proposed the λ-calculus as a calculus of functions 1. Given Landin's insight on the central role of procedures as a facility common to all languages, the λ-calculus was a natural starting point. However, to support basic data and related primitives as well as assignments and control constructs, Landin extended the λ-calculus with appropriate constructions. He specified the semantics of the extended language with an abstract machine because he did not know how to extend the equational theory of the λ-calculus to a theory for the complete programming language. Indeed, it turned out that the λ-calculus does not even explain the semantics of the pure functional sub-language because Iswim always evaluates the arguments to a procedure. Thus, Landin did not accomplish what he had set out to do, namely, to define the idealized core of all programming languages and an equational calculus that defines its semantics. Starting with Plotkin's work on the relationship of abstract machines to equational 1 With the goal of understanding all of mathematics based on this calculus 5 6 CONTENTS calculi in the mid-1970's, the gap in Landin's work has been filled …
منابع مشابه
Algebra and Topology in Lambda Calculus
The untyped lambda calculus was introduced around 1930 by Church [11] as part of an investigation in the formal foundations of mathematics and logic. Although lambda calculus is a very basic language, it is sufficient to express all the computable functions. The process of application and evaluation reflects the computational behavior of many modern functional programming languages, which expla...
متن کاملArrays in Imperative Lambda Calculus
In recent work, we defined a formal system called Imperative Lambda Calculus to provide clean integration of functional and imperative programming styles. In this paper, we study the issues of array manipulation in this framework. It is shown that the unique features of the calculus allow one to express array algorithms using high-level abstractions that are not available in purely functional l...
متن کاملSimply Easy! An Implementation of a Dependently Typed Lambda Calculus
We present an implementation in Haskell of a dependently-typed lambda calculus that can be used as the core of a programming language. We show that a dependently-typed lambda calculus is no more difficult to implement than other typed lambda calculi. In fact, our implementation is almost as easy as an implementation of the simply typed lambda calculus, which we emphasize by discussing the modif...
متن کاملExtending the Lambda Calculus to Express Randomized and Quantumized Algorithms
This paper introduces a formal metalanguage called the lambda-q calculus for the specification of quantum programming languages. This metalanguage is an extension of the lambda calculus, which provides a formal setting for the specification of classical programming languages. As an intermediary step, we introduce a formal metalanguage called the lambdap calculus for the specification of program...
متن کاملAlgorithms for Extended Alpha-Equivalence and Complexity
Equality of expressions in lambda-calculi, higher-order programming languages, higher-order programming calculi and process calculi is defined as alpha-equivalence. Permutability of bindings in let-constructs and structural congruence axioms extend alpha-equivalence. We analyse these extended alpha-equivalences and show that there are calculi with polynomial time algorithms, that a multiple-bin...
متن کاملThe impact of the lambda calculusin logic and computer
One of the most important contributions of A. Church to logic is his invention of the lambda calculus. We present the genesis of this theory and its two major areas of application: the representation of computations and the resulting functional programming languages on the one hand and the representation of reasoning and the resulting systems of computer mathematics on the other hand. Acknowled...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
عنوان ژورنال:
دوره شماره
صفحات -
تاریخ انتشار 2002